<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html> <head>
<title>AspectJ 1.6.3 Readme</title>
<style type="text/css">
<!--
  P   { margin-left:  20px; }
  PRE { margin-left:  20px; }
  LI  { margin-left:  20px; }
  H4  { margin-left:  20px; }
  H3  { margin-left:  10px; }
-->
</style>
</head>

<body>
<div align="right"><small>
&copy; Copyright 2008 Contributors.
All rights reserved.
</small></div>

<h1>AspectJ 1.6.3 Readme</h1>

<ul>
<li><a href="#split">Split matching/weaving</a></li>
<li><a href="#bugsfixed">Bugs fixed</a></li>
<li><a href="#notable">Notable bug fixes</a></li>
<li><a href="#whatsnext">What's next?</a></li>
</ul>
<hr>
<a name="split"/>
<H4>Split matching/weaving</h4>
<p>The main goal of AspectJ 1.6.3 was to make the line between matching and weaving more explicit and
introduce the notion of a matcher artifact.  This matcher would enable reuse of the semantics of 
AspectJ pointcut matching without including the unnecessary code that is the weaver.  Why?  In some
environments, for example Spring AOP, the weaving may be done in an entirely different way and the 
default weaver included in aspectjweaver.jar is just unnecessary code.  Some users also find they have trouble getting
approval for using the 'aspectjweaver.jar' in their projects because it includes a bytecode 
modification library, even when they are not using that code.
<p>The result of this work is documented in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=246125">bug 246125</a>
and there is now a new jar file in the distribution called org.aspectj.matcher.jar that includes
a first pass at the matching code.  It is not quite as slimmed down as it could be but is a first
pass that includes no bytecode modification toolkit.
<p>To use this matcher standalone it simply requires an abstraction of some type system to be plugged in.
The matcher code can then be used to parse standard pointcuts and answer questions about whether they match against
that type system.  There is no documentation on how to do this yet, as we don't think many users will 
be contributing new type systems, but internally we are working on an Eclipse JDT type system abstraction that will
enable us to show matches in AJDT without actually compiling code (currently the two type system abstractions
we ship are bytecode based and reflection based - both of which require compilation).
<hr>
<a name="bugsfixed"/>
<h4>Bugs fixed</h4>
<p>The complete list of issues resolved for AspectJ 1.6.3 (more than 50) can be found with
this bugzilla query:
<ul>
<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.6.3&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">Bugs resolved</a>
</ul>
<p>During 2008, there have been four AspectJ releases, fixing almost 200 issues.
<hr>
<a name="notable"/>
<h4>Notable bug fixes</h4>

<ul>
<li>More improvements to the way AspectJ/AJDT communicate (251277, 249216, 258325)
<li>More ajdoc improvements (256514)
<li>Better support for non standard annotation style parameter ordering (164573, 219419)
<li>Fixed long standing issue with extending Spring SecurityInterceptor (252722)
<li>Ensure parameter annotations made on an ITD reach the target affected type (256669)
</ul>

<hr>
<a name="whatsnext"/>
<h4>What's next?</h4>

<p>The JDT World should be completed in the 1.6.4 timeframe and that will surface as benefits in AJDT, possibly leading to better
LTW tooling.  Some improved syntax for intertype declarations is a possible candidate feature (see discussion in 
<a href="http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg10208.html">this mailing list thread</a>).
A possible introduction of a code style syntax for the mixin style that is @DeclareParents (and a renaming of 
@DeclareParents to perhaps DeclareMixin or DeclareDelegate).

<hr>

<!-- ============================== -->  
</body>
</html>
